home *** CD-ROM | disk | FTP | other *** search
/ Nibble Magazine / nib10.dsk / COMPARE PROGRAMS.bas < prev    next >
BASIC Source File  |  2023-02-26  |  4KB  |  117 lines

  1. 1  REM  **************************
  2. 2  REM  *    COMPARE  PROGRAM    *
  3. 3  REM  *           BY           *
  4. 4  REM  *    CHARLES G. BOODY    *
  5. 5  REM  *        06/01/80        *
  6. 6  REM  *   COMMERCIAL  RIGHTS   *
  7. 7  REM  *        RESERVED        *
  8. 8  REM  **************************
  9. 10  REM 
  10. 20  REM  ** LENGTH OF PROGRAM LINE TO BE
  11. 30  REM  ** PRINTED ON A SINGLE LINE IS
  12. 40  REM  ** SET BY LL IN THE STATEMENT
  13. 50  REM  ** BELOW
  14. 60 LL = 50
  15. 70  TEXT : HOME : VTAB 5
  16. 80 MAXFILES = 4
  17. 90  REM 
  18. 100  REM  ** ENTER THE NAMES FILES TO BE
  19. 110  REM  ** COMPARED--MUST BE TEXT FILES
  20. 120  REM  ** CREATED BY EXEC OF CAPTURE
  21. 130  REM  ** GIVE NAME OF CHANGE FILE
  22. 140  REM  ** IF ONE IS TO BE CREATED
  23. 150 D$ =  CHR$(4): INPUT "OLD PROGRAM TEXT FILE NAME ";O$: INPUT "NEW PROGRAM TEXT FILE NAME ";N$
  24. 160  VTAB 12: INPUT "MAKE AN EXECUTE FILE OF THE CHANGES?    (1=YES, 0=NO)--PRESS RETURN ";CK%: IF CK% < >0  AND CK% < >1  THEN  PRINT  CHR$(7);: GOTO 160
  25. 170  IF CK% = 1  THEN  INPUT "NAME THE EXEC FILE: ";C$: PRINT D$;"OPEN";C$: PRINT D$;"DELETE";C$: PRINT D$;"OPEN";C$
  26. 180  GOSUB 1080: REM  PRINTER ON
  27. 190  ONERR  GOTO 770
  28. 200  GOTO 450
  29. 210  REM 
  30. 220  REM  ** GETS A STATEMENT FROM THE
  31. 230  REM  ** "OLD" FILE
  32. 240  REM 
  33. 250 OS$ = "": PRINT D$;"READ ";O$
  34. 260  GET A$: IF A$ < > CHR$(13)  OR  LEN(OS$) = 0  THEN  IF  LEN(OS$) <255  THEN OS$ = OS$ +A$: GOTO 260
  35. 270  PRINT : RETURN 
  36. 280  REM 
  37. 290  REM  ** GETS A STATEMENT FROM THE
  38. 300  REM  ** "NEW" FILE
  39. 310  REM 
  40. 320 NS$ = "": PRINT D$;"READ ";N$
  41. 330  GET A$: IF A$ < > CHR$(13)  OR  LEN(NS$) = 0  THEN  IF  LEN(NS$) <255  THEN NS$ = NS$ +A$: GOTO 330
  42. 340  PRINT : RETURN 
  43. 350  REM 
  44. 360  REM  ** PRINTS A STATEMENT
  45. 370  REM  ** IN LL LONG LINES
  46. 380  REM 
  47. 390 II = 0
  48. 400 IO = II +1:II = II +LL: PRINT  TAB( 12); MID$ (J$,IO,LL): IF II < LEN(J$)  THEN 400
  49. 410  RETURN 
  50. 420  REM 
  51. 430  REM  ** MAIN PROGRAM LOOP
  52. 440  REM 
  53. 450  PRINT D$;"OPEN "O$: PRINT D$;"OPEN ";N$
  54. 460  GOSUB 250: GOSUB 320
  55. 470  REM 
  56. 480  REM  ** IF STATEMENT # SAME AND
  57. 490  REM  ** CONTENTS SAME IGNORE
  58. 500  REM 
  59. 510 OS =  VAL(OS$):NS =  VAL(NS$): IF  VAL(OS$) =  VAL(NS$)  AND OS$ = NS$  THEN 460
  60. 520  REM 
  61. 530  REM  ** IF STATEMENT #S SAME BUT
  62. 540  REM  ** CONTENTS NOT PRINT "CHANGED"
  63. 550  REM  ** AND GET NEXT STATEMENT
  64. 560  REM 
  65. 570  IF  VAL(OS$) =  VAL(NS$)  AND OS$ < >NS$  THEN  PRINT "CHANGED ": PRINT  TAB( 5); VAL(OS$);:J$ = OS$: GOSUB 390: PRINT "TO:": PRINT  TAB( 5); VAL(NS$);:J$ = NS$: GOSUB 390: GOSUB 870: GOTO 460
  66. 580  REM 
  67. 590  REM  ** IF OLD LINE# < NEW THEN
  68. 600  REM  ** OLD LINE WAS DELETED
  69. 610  REM  ** PRINT FACT AND GET NEXT
  70. 620  REM 
  71. 630  IF  VAL(OS$) < VAL(NS$)  THEN  PRINT "DELETED ": PRINT  TAB( 5); VAL(OS$);:J$ = OS$: GOSUB 390: GOSUB 250: GOSUB 960: GOTO 510
  72. 640  REM 
  73. 650  REM  ** IF NONE OF ABOVE THEN
  74. 660  REM  ** NEW LINE IS ADDED.
  75. 670  REM  ** PRINT FACT AND GET NEXT.
  76. 680  REM 
  77. 690  PRINT "ADDED ": PRINT  TAB( 5); VAL(NS$);:J$ = NS$: GOSUB 390: GOSUB 320: GOSUB 870: GOTO 510
  78. 700  REM 
  79. 710  REM  ** WHEN A FILE IS EMPTY
  80. 720  REM  ** DETERMINE WHICH AND
  81. 730  REM  ** ALL IN REMAINING FILE
  82. 740  REM  ** ARE EITHER ADDED OR
  83. 750  REM  ** DELETED.
  84. 760  REM 
  85. 770 X =  PEEK(218) + PEEK(219) *256: POKE 216,0: ONERR  GOTO 1030
  86. 780  IF X >310  THEN 800
  87. 790  PRINT "ADDED:": GOSUB 320:J$ = NS$: GOSUB 390: GOSUB 870: GOTO 790
  88. 800  IF  VAL(OS$) < >NS  THEN  PRINT "DELETED:":J$ = OS$: GOSUB 390
  89. 810  PRINT "DELETED:": GOSUB 250:J$ = OS$: GOSUB 390: GOSUB 960: GOTO 810
  90. 820  REM 
  91. 830  REM  ** IF CREATING EXEC FILE
  92. 840  REM  ** STORE CHANGED OR ADDED
  93. 850  REM  ** LINE
  94. 860  REM 
  95. 870  IF CK% = 0  THEN  RETURN 
  96. 880  PRINT D$;"WRITE ";C$: PRINT J$
  97. 890  PRINT 
  98. 900  PRINT D$;"READ";C$: RETURN 
  99. 910  REM 
  100. 920  REM  ** IF CREATING EXEC FILE
  101. 930  REM  ** AND STATEMENT IS DELETED
  102. 940  REM  ** STORE STATEMENT NUMBER
  103. 950  REM 
  104. 960  IF CK% = 0  THEN  RETURN 
  105. 970  PRINT D$;"WRITE ";C$: PRINT  VAL(J$)
  106. 980  PRINT D$;"READ";C$: RETURN 
  107. 990  REM 
  108. 1000  REM  ** END OF BOTH FILES REACHED
  109. 1010  REM  ** SO PROGRAM ENDS
  110. 1020  REM 
  111. 1030  PRINT : PRINT "END OF COMPARISONS": PRINT D$;"CLOSE": GOSUB 1090
  112. 1040  END 
  113. 1050  REM 
  114. 1060  REM  ***PRINTER ON AND OFF
  115. 1070  REM 
  116. 1080  PRINT D$: PRINT D$;"PR#1": RETURN 
  117. 1090  PRINT D$: PRINT D$;"PR#0": RETURN